Micron Document
🎖️GitЯра🎖️

Commit 981290b5c04e93f0a9cc21ee9a26acba375793cb


Parents : cf0f7a4
Author : James Rich <2199651+jamesarich@users.noreply.github.com>
Signature : Signature validation error
Date : 2026-08-13T16:57:32Z
Committer : GitHub <noreply@github.com>
Date : 2026-08-13T16:57:32Z

ci: move the remaining lightweight jobs to ubuntu-slim (#6677)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

Changes
Diff

diff --git a/.github/instructions/ci-workflows.instructions.md b/.github/instructions/ci-workflows.instructions.md
index fceb3270e0..361892d99f 100644
--- a/.github/instructions/ci-workflows.instructions.md
+++ b/.github/instructions/ci-workflows.instructions.md
@@ -10,5 +10,10 @@ excludeAgent: "code-review"
- CI passes `-Pci=true` to enable full processor usage via `maxParallelForks`.
- Use `fetch-depth: 0` only where needed (spotless ratcheting, version code). Use `fetch-depth: 1` otherwise.
- Desktop build matrix: `macos-latest`, `windows-latest`, `ubuntu-24.04`, `ubuntu-24.04-arm`.
-- Lightweight jobs (labelers, triage, stale): use `ubuntu-24.04-arm` runners.
+- Lightweight jobs (status gates, labelers, triage, stale, run-cancellers, changelog/release
+ cleanup): use `ubuntu-slim`. It is container-backed and starts in seconds, but it is
+ single-CPU, unprivileged, x64-only, and its 15-minute job cap is a hard platform limit — so it
+ fits API/script work (`gh`, `jq`, `git`, stdlib `python3`, `github-script`) and nothing that
+ needs `sudo`, `apt-get`, Docker, a mounted filesystem, or a long full-history clone.
+- Lightweight jobs that break any of those constraints: use `ubuntu-24.04-arm` runners.
- Gradle-heavy jobs: use `ubuntu-24.04` runners.

diff --git a/.github/workflows/merge-queue.yml b/.github/workflows/merge-queue.yml
index 0e6692ed42..f35f6d028d 100644
--- a/.github/workflows/merge-queue.yml
+++ b/.github/workflows/merge-queue.yml
@@ -19,10 +19,12 @@ jobs:
# new merge group but does NOT cancel the workflow runs of the destroyed one. Those stale
# runs sit queued/running and starve the runner pool. Cancel any older merge-queue run
# for the same PR — only the newest merge group per PR is ever valid.
+ # No checkout, no toolchain — just gh api + jq. ubuntu-slim starts sooner than a VM, which
+ # matters most here: every second before this runs is a second the superseded run keeps a slot.
cancel-superseded:
name: Cancel Superseded Queue Runs
if: github.repository == 'meshtastic/Meshtastic-Android'
- runs-on: ubuntu-24.04-arm
+ runs-on: ubuntu-slim
timeout-minutes: 5
permissions:
actions: write

diff --git a/.github/workflows/post-release-cleanup.yml b/.github/workflows/post-release-cleanup.yml
index f9e97f7e05..0c4ea285c8 100644
--- a/.github/workflows/post-release-cleanup.yml
+++ b/.github/workflows/post-release-cleanup.yml
@@ -24,7 +24,11 @@ concurrency:
jobs:
cleanup_prereleases:
- runs-on: ubuntu-24.04-arm
+ # ubuntu-slim: gh + git + jq + stdlib python is the whole toolchain, and the gh-pages
+ # worktree needs no privileges. Slim is single-CPU (the full-history clone below is slower
+ # than on a VM) and its 15-minute platform cap is hard, matching the timeout already set
+ # here. Each step is independently re-runnable, so a capped run is retryable.
+ runs-on: ubuntu-slim
timeout-minutes: 15
# Dispatch inputs reach the shell as environment variables rather than being
# interpolated into the script text: base_version is free-form and feeds a

diff --git a/.github/workflows/pr-closed-cleanup.yml b/.github/workflows/pr-closed-cleanup.yml
index 738951adf8..42b3c05812 100644
--- a/.github/workflows/pr-closed-cleanup.yml
+++ b/.github/workflows/pr-closed-cleanup.yml
@@ -21,7 +21,9 @@ permissions:
jobs:
cancel-pr-runs:
if: github.repository == 'meshtastic/Meshtastic-Android'
- runs-on: ubuntu-24.04-arm
+ # Actions API only, no checkout (and must stay that way — see the
+ # pull_request_target note above), so ubuntu-slim's container is sufficient.
+ runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- name: Cancel in-flight CI runs for the closed PR

diff --git a/.github/workflows/pull-request-target.yml b/.github/workflows/pull-request-target.yml
index 4af8c8ed6b..3412ee28c0 100644
--- a/.github/workflows/pull-request-target.yml
+++ b/.github/workflows/pull-request-target.yml
@@ -14,7 +14,8 @@ jobs:
permissions:
contents: read
pull-requests: write
- runs-on: ubuntu-24.04-arm
+ # github-script only, no checkout, so ubuntu-slim's container is sufficient.
+ runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- name: Auto-label PR

diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index fc612014c4..16dfd5e5f4 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -15,7 +15,9 @@ concurrency:
jobs:
stale_issues:
name: Close Stale Issues
- runs-on: ubuntu-24.04-arm
+ # actions/stale is pure API work with no checkout, so ubuntu-slim's container is
+ # sufficient. Its 15-minute platform cap matches the timeout already set here.
+ runs-on: ubuntu-slim
timeout-minutes: 15
if: github.repository == 'meshtastic/Meshtastic-Android'

diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml
index acecc34385..4c22db8327 100644
--- a/.github/workflows/update-changelog.yml
+++ b/.github/workflows/update-changelog.yml
@@ -18,7 +18,11 @@ concurrency:
jobs:
update-changelog:
- runs-on: ubuntu-24.04-arm
+ # ubuntu-slim: git + gh + coreutils + stdlib python3 is the whole toolchain here. Note this job checks out
+ # full history below and slim is single-CPU, so the clone is slower than on a VM — and
+ # slim's 15-minute platform cap is hard, matching the timeout already set here. A run that
+ # outgrows that budget fails; it regenerates CHANGELOG.md from scratch, so a retry is safe.
+ runs-on: ubuntu-slim
timeout-minutes: 15
steps:
- name: Checkout code

Served by rngit 1.5.2 - Generated in 0.14s